%! TEX program = xelatex
%! TEX root = ../main.tex
%! TEX encoding = utf-8

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  哈尔滨工程大学学位论文 XeLaTeX 模版 —— 正文文件 chap04.tex
%
%  版本：1.0.0
%  最后更新：
%  修改者：Leo LiWenhui lwh@hrbeu.edu.cn
%  修订者：
%  编译环境1：Ubuntu 12.04 + TeXLive 2013/2014
%  编译环境2：Windows 7/8  + TeXLive 2013/2014
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{其他自定义命令}[Other User Defined Cmd and Env]
\label{AppCustom}

本附录演示通过自定义环境和命令对排版格式进行定义。

\section{\LaTeX{}文档}[\LaTeX{} Source]

通常可以使用 \texttt{listering} 环境定义源文档，如果需要针对不同源文档进行定制化的格式输出，可以采用自定义环境方式，例如本模板中定义的 \texttt{latex} 环境，只需将源文档内容放在 \texttt{\cs begin\{latex\} ... \cs end\{latex\}}中，即可按源代码格式输出并按设定颜色高亮显示关键字。

\begin{latex}
\documentclass{ctexart}
\begin{document}
    Hello, world!
    你好，世界！
\end{document}
\end{latex}

\section{\LaTeX{}代码与编译结果}[\LaTeX{} Code and Result]

同过自定义的 \texttt{codeshow} 环境变量，可以将 \LaTeX{} 源代码和编译后显示效果同时进行分栏显示，对于编写 \LaTeX{} 说明类文档具有非常好的排版效果，例如：

\begin{latex}
\begin{codeshow}
$\backslash$ 
\textbackslash
\texttt{\char92}
\end{codeshow}
\end{latex}

对应的排版输出效果为：

\begin{codeshow}
$\backslash$ 
\textbackslash
\texttt{\char92}
\end{codeshow}

其中命令\latexline{char[num]}是一个特殊的命令，使用环境需要是tt字体环境，用于输出ASCII码对应的字符；92对应的即反斜杠。你也可以用\latexline{char`}后加字符的方式输出你想输出的命令，但需要包裹在\latexline{texttt}或者\latexline{ttfamily}内。如果想输出的字符是保留字符，需要再加一个反斜杠。
\begin{verbatim}
\texttt{\char`~} % 输出一个波浪线
\texttt{\char`\\} % 输出保留字反斜杠
\texttt{\char`@} % 实际上可直接输入@
\end{verbatim}

另外需要说明的是，上例提及的波浪线{\texttt{\~}}用来输出一个禁止在该处断行的空格，也不能够直接输出。尝试：
\begin{codeshow}
a $\sim$ b
a\~ b
a\~{} b
a\textasciitilde b
\end{codeshow}

如果需要分行显示，可以按 \LaTeX{} 基本分段排版格式进行。

\begin{codeshow}
a $\sim$ b \\
a\~ b \\
a\~{} b \\
a\textasciitilde b
\end{codeshow}

\section{Tikz 的输入输出}[Tikz Output]

\texttt{codeshow} 支持 Tikz 绘图命令的输出，例如：

两个例子：
\begin{codeshow}
% 使用 \tikz 命令
\tikz{\draw (0,1) -- (1,0)}
% 使用 tikzpicture 环境
\begin{tikzpicture}
\draw (0,0) -- (1,1);
\end{tikzpicture}
\end{codeshow}

也可以使用 \texttt{tikzshow} 自定义环境显示 Tikz 源代码及其图形，例如下面的 B\'ezier 曲线和圆形绘图：

\begin{tikzshow}
\draw (0,0) .. controls (0.5,1) and (1.5,1) .. (2,0);
% Auxilary Points & Lines
\filldraw[black] (0,0) circle [radius=2pt] (0.5,1) circle [radius=2pt] (1.5,1) circle [radius=2pt] (2,0) circle [radius=2pt];
\draw[dashed] (0,0) -- (0.5,1);
\draw[dashed] (1.5,1) -- (2,0);
\end{tikzshow}

\begin{tikzshow}
\draw (0,0) circle [x radius=12pt, y radius=6pt];
\draw (2,0) circle [radius=0.5cm];
\end{tikzshow}

对应的 \LaTeX{} 源代码分别为：

\begin{latex}
\begin{tikzshow}
\draw (0,0) .. controls (0.5,1) and (1.5,1) .. (2,0);
% Auxilary Points & Lines
\filldraw[black] (0,0) circle [radius=2pt] (0.5,1) circle [radius=2pt] (1.5,1) circle [radius=2pt] (2,0) circle [radius=2pt];
\draw[dashed] (0,0) -- (0.5,1);
\draw[dashed] (1.5,1) -- (2,0);
\end{tikzshow}
\end{latex}

\begin{latex}
\begin{tikzshow}
\draw (0,0) circle [x radius=12pt, y radius=6pt];
\draw (2,0) circle [radius=0.5cm];
\end{tikzshow}
\end{latex}
